import java.util.*;

public class CollectionsUtilTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();

        list.add("vegeta");
        list.add("chenzi");
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        System.out.println(list);

        //自然排序
        Collections.sort(list);
        System.out.println("自然排序："+list);

        //冒泡排序,比较对象，要不compareTo，要不Comparable
        maoPao(list);

        //随机排序
        Collections.shuffle(list);
        System.out.println("随机排序："+list);

        //TreeSet倒序、长度排序
        TreeSetDemo();

        //枚举
        System.out.println("枚举："+Collections.enumeration(list));

        //replaceAll替换
        Collections.replaceAll(list,"chenzi","nancy");
        System.out.println("replaceAll替换："+list);

        //fill替换
        Collections.fill(list,"vegeta");
        System.out.println("fill替换："+list);

        //折半查找
        int index = Collections.binarySearch(list,"chenzi");
        System.out.println("折半查找："+"chenzi -> "+index);

        //获取最大值，最小值
        String maxStr = Collections.max(list);
        String minStr = Collections.min(list);
        System.out.println("maxStr:"+maxStr+" "+"minStr:"+minStr);

        //asList使用
        asListDemo();
    }

    //maoPao
    private static List<String> maoPao(List<String> list) {
        for (int i = 0;i < list.size()-1;i++){
            for (int j = i+1;j < list.size();j++){
                if(list.get(i).compareTo(list.get(j))>0){
                    String temp = list.get(i);
                    list.set(i,list.get(i));
                    list.set(j,temp);
                }
            }
        }
        System.out.println("冒泡排序："+list);
        return list;
    }

    private static void TreeSetDemo() {
        //自然排序
//        TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                int temp = o1.compareTo(o2);
//                return temp;
//            }
//        });

        //倒序
//        TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());
//        ts.add("vegeta");
//        ts.add("chenzi");
//        ts.add("aaa");
//        ts.add("bbb");
//        ts.add("ccc");
//        System.out.println(ts);

        //按照长度排序
        TreeSet<String> ts = new TreeSet<String>(new ComparatorByLength());
        ts.add("vegeta");
        ts.add("helloworld");
        ts.add("chenzi");
        ts.add("aaa");
        ts.add("bbb");
        ts.add("ccc");
        System.out.println("长度排序："+ts);
    }

    //asList使用，注意：此为固定大小的数组。
    private static void asListDemo() {
        //注意：关于数组中的元素
        //1、如果数组中的元素是对象，那么转成集合时，直接将数组中的元素作为集合中的元素进行集合存储。
        //2、如果数组中的元素是基本数据类型（byte、boolean、char、short、int、long、double、float），
        //那么转成集合时，直接将数组中的元素作为集合中的元素进行集合存储。
        String[] stringArr = {"zzz","xxx","ccc"};
        List<String> stringList = Arrays.asList(stringArr);
        boolean a = stringList.contains("ccc");
        System.out.println("是否包含："+a);

        int[] intArr = new int[5];
        intArr[0] = 1;
        intArr[1] = 0;
        intArr[2] = 1;
        intArr[3] = 1;
        intArr[4] = 0;
        int j = 0;
        for (int i : intArr){
            System.out.println("intArr"+"["+j+"]"+"："+i);
            j++;
        }

    }
}

//按照长度排序
class ComparatorByLength implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {
        int temp = o1.length() - o2.length();
        return temp == 0 ? o1.compareTo(o2) : temp;
    }
}

